[INFO] cloning repository https://github.com/deadlovelll/simple-rl
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/deadlovelll/simple-rl" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdeadlovelll%2Fsimple-rl", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdeadlovelll%2Fsimple-rl'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7138978243e62c1334066871b5faf6b7921e4556
[INFO] fixing deadlovelll/simple-rl against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=start=2015 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdeadlovelll%2Fsimple-rl" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/deadlovelll/simple-rl
[INFO] finished tweaking git repo https://github.com/deadlovelll/simple-rl
[INFO] tweaked toml for git repo https://github.com/deadlovelll/simple-rl written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/deadlovelll/simple-rl on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/deadlovelll/simple-rl already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded fred-macros v0.1.0
[INFO] [stderr]   Downloaded fred v10.1.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a71123197e167f5efe3344c956c5a4d18ff5bada903013fa05f6fea73607ba01
[INFO] running `Command { std: "docker" "start" "a71123197e167f5efe3344c956c5a4d18ff5bada903013fa05f6fea73607ba01", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a71123197e167f5efe3344c956c5a4d18ff5bada903013fa05f6fea73607ba01" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a71123197e167f5efe3344c956c5a4d18ff5bada903013fa05f6fea73607ba01", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a71123197e167f5efe3344c956c5a4d18ff5bada903013fa05f6fea73607ba01" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=start=2015", kill_on_drop: false }`
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling aws-lc-rs v1.17.0
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking untrusted v0.9.0
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]     Checking ipnet v2.12.0
[INFO] [stderr]    Compiling crc16 v0.4.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking rustls-pki-types v1.14.1
[INFO] [stderr]     Checking minimal-lexical v0.2.1
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]     Checking openssl-probe v0.2.1
[INFO] [stderr]     Checking bytes-utils v0.1.4
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking cookie-factory v0.3.2
[INFO] [stderr]     Checking bitflags v2.11.1
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking arc-swap v1.9.1
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling fred-macros v0.1.0
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]     Checking semver v1.0.28
[INFO] [stderr]     Checking rustls-native-certs v0.8.4
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking float-cmp v0.10.0
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling cc v1.2.63
[INFO] [stderr]     Checking redis-protocol v6.0.0
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling aws-lc-sys v0.41.0
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking h2 v0.4.14
[INFO] [stderr]     Checking fred v10.1.0
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking rustls-platform-verifier v0.7.0
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking reqwest v0.13.4
[INFO] [stderr]     Checking simple-rl v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::application::request::services::window_builder::WindowBuilder`
[INFO] [stdout]  --> src/application/request/interactors/process_request.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::application::request::services::window_builder::WindowBuilder;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/domain/limit/repository/repository.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env`
[INFO] [stdout]  --> src/infrastructure/db/client/client.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::env;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::infrastructure::db::client::RateLimitDbClient`
[INFO] [stdout]  --> src/infrastructure/db/repository/limit/limit_repository.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::infrastructure::db::client::RateLimitDbClient;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `client::HttpClient`
[INFO] [stdout]  --> src/infrastructure/client/mod.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use client::HttpClient;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/domain/limit/repository/repository.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::infrastructure::db::client::RateLimitDbClient`
[INFO] [stdout]  --> src/infrastructure/db/repository/limit/limit_repository.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::infrastructure::db::client::RateLimitDbClient;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `client::HttpClient`
[INFO] [stdout]  --> src/infrastructure/client/mod.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use client::HttpClient;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:45:17
[INFO] [stdout]    |
[INFO] [stdout] 45 |             let mut page = result.unwrap();
[INFO] [stdout]    |                 ----^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `window_builder::WindowBuilder: domain::limit::window::window::Window` is not satisfied
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:65:50
[INFO] [stdout]    |
[INFO] [stdout] 65 |         let interactor = ProcessRequestImpl::new(window_builder, repo);
[INFO] [stdout]    |                          ----------------------- ^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `domain::limit::window::window::Window` is not implemented for `window_builder::WindowBuilder`
[INFO] [stdout]   --> src/application/request/services/window_builder.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct WindowBuilder {}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: this trait has no implementations, consider adding one
[INFO] [stdout]   --> src/domain/limit/window/window.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | pub trait Window {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `process_request::ProcessRequestImpl::<W, R, N>::new`
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl<W: Window, R: LimitRepsiotry, N: NetworkClient> ProcessRequestImpl<W, R, N> {
[INFO] [stdout]    |         ^^^^^^ required by this bound in `ProcessRequestImpl::<W, R, N>::new`
[INFO] [stdout] 14 |     pub fn new(window_builder: W, rate_limit_repository: R, network_client: N) -> Self {
[INFO] [stdout]    |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 3 arguments but 2 arguments were supplied
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:65:26
[INFO] [stdout]    |
[INFO] [stdout] 65 |         let interactor = ProcessRequestImpl::new(window_builder, repo);
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^---------------------- argument #3 is missing
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new(window_builder: W, rate_limit_repository: R, network_client: N) -> Self {
[INFO] [stdout]    |            ^^^                                              -----------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 65 |         let interactor = ProcessRequestImpl::new(window_builder, repo, /* network_client */);
[INFO] [stdout]    |                                                                      ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `window_builder::WindowBuilder: domain::limit::window::window::Window` is not satisfied
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:65:26
[INFO] [stdout]    |
[INFO] [stdout] 65 |         let interactor = ProcessRequestImpl::new(window_builder, repo);
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `domain::limit::window::window::Window` is not implemented for `window_builder::WindowBuilder`
[INFO] [stdout]   --> src/application/request/services/window_builder.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct WindowBuilder {}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: this trait has no implementations, consider adding one
[INFO] [stdout]   --> src/domain/limit/window/window.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | pub trait Window {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `process_request::ProcessRequestImpl`
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:7:34
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct ProcessRequestImpl<W: Window, R: LimitRepsiotry, N: NetworkClient> {
[INFO] [stdout]    |                                  ^^^^^^ required by this bound in `ProcessRequestImpl`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `process` exists for struct `process_request::ProcessRequestImpl<window_builder::WindowBuilder, LimitRepositoryImpl, _>`, but its trait bounds were not satisfied
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:71:33
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct ProcessRequestImpl<W: Window, R: LimitRepsiotry, N: NetworkClient> {
[INFO] [stdout]    | ----------------------------------------------------------------------------- method `process` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 71 |         let result = interactor.process(fake_user_ip, fake_destination_ip).await;
[INFO] [stdout]    |                                 ^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/application/request/services/window_builder.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct WindowBuilder {}
[INFO] [stdout]    | ------------------------ doesn't satisfy `_: Window`
[INFO] [stdout]    |
[INFO] [stdout] note: trait bound `window_builder::WindowBuilder: domain::limit::window::window::Window` was not satisfied
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl<W: Window, R: LimitRepsiotry, N: NetworkClient> ProcessRequestImpl<W, R, N> {
[INFO] [stdout]    |         ^^^^^^                                       ---------------------------
[INFO] [stdout]    |         |
[INFO] [stdout]    |         unsatisfied trait bound introduced here
[INFO] [stdout] note: the trait `domain::limit::window::window::Window` must be implemented
[INFO] [stdout]   --> src/domain/limit/window/window.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | pub trait Window {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `window_builder::WindowBuilder: domain::limit::window::window::Window` is not satisfied
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:89:50
[INFO] [stdout]    |
[INFO] [stdout] 89 |         let interactor = ProcessRequestImpl::new(window_builder, repo);
[INFO] [stdout]    |                          ----------------------- ^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `domain::limit::window::window::Window` is not implemented for `window_builder::WindowBuilder`
[INFO] [stdout]   --> src/application/request/services/window_builder.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct WindowBuilder {}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: this trait has no implementations, consider adding one
[INFO] [stdout]   --> src/domain/limit/window/window.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | pub trait Window {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `process_request::ProcessRequestImpl::<W, R, N>::new`
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl<W: Window, R: LimitRepsiotry, N: NetworkClient> ProcessRequestImpl<W, R, N> {
[INFO] [stdout]    |         ^^^^^^ required by this bound in `ProcessRequestImpl::<W, R, N>::new`
[INFO] [stdout] 14 |     pub fn new(window_builder: W, rate_limit_repository: R, network_client: N) -> Self {
[INFO] [stdout]    |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 3 arguments but 2 arguments were supplied
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:89:26
[INFO] [stdout]    |
[INFO] [stdout] 89 |         let interactor = ProcessRequestImpl::new(window_builder, repo);
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^---------------------- argument #3 is missing
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new(window_builder: W, rate_limit_repository: R, network_client: N) -> Self {
[INFO] [stdout]    |            ^^^                                              -----------------
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 89 |         let interactor = ProcessRequestImpl::new(window_builder, repo, /* network_client */);
[INFO] [stdout]    |                                                                      ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `window_builder::WindowBuilder: domain::limit::window::window::Window` is not satisfied
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:89:26
[INFO] [stdout]    |
[INFO] [stdout] 89 |         let interactor = ProcessRequestImpl::new(window_builder, repo);
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `domain::limit::window::window::Window` is not implemented for `window_builder::WindowBuilder`
[INFO] [stdout]   --> src/application/request/services/window_builder.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct WindowBuilder {}
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: this trait has no implementations, consider adding one
[INFO] [stdout]   --> src/domain/limit/window/window.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | pub trait Window {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `process_request::ProcessRequestImpl`
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:7:34
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct ProcessRequestImpl<W: Window, R: LimitRepsiotry, N: NetworkClient> {
[INFO] [stdout]    |                                  ^^^^^^ required by this bound in `ProcessRequestImpl`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `process` exists for struct `process_request::ProcessRequestImpl<window_builder::WindowBuilder, LimitRepositoryImpl, _>`, but its trait bounds were not satisfied
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:97:24
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct ProcessRequestImpl<W: Window, R: LimitRepsiotry, N: NetworkClient> {
[INFO] [stdout]    | ----------------------------------------------------------------------------- method `process` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 97 |             interactor.process(fake_user_ip, fake_destination_ip).await;
[INFO] [stdout]    |                        ^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/application/request/services/window_builder.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct WindowBuilder {}
[INFO] [stdout]    | ------------------------ doesn't satisfy `_: Window`
[INFO] [stdout]    |
[INFO] [stdout] note: trait bound `window_builder::WindowBuilder: domain::limit::window::window::Window` was not satisfied
[INFO] [stdout]   --> src/application/request/interactors/process_request.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl<W: Window, R: LimitRepsiotry, N: NetworkClient> ProcessRequestImpl<W, R, N> {
[INFO] [stdout]    |         ^^^^^^                                       ---------------------------
[INFO] [stdout]    |         |
[INFO] [stdout]    |         unsatisfied trait bound introduced here
[INFO] [stdout] note: the trait `domain::limit::window::window::Window` must be implemented
[INFO] [stdout]   --> src/domain/limit/window/window.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | pub trait Window {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `process` exists for struct `process_request::ProcessRequestImpl<window_builder::WindowBuilder, LimitRepositoryImpl, _>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/application/request/interactors/process_request.rs:100:39
[INFO] [stdout]     |
[INFO] [stdout]   7 | pub struct ProcessRequestImpl<W: Window, R: LimitRepsiotry, N: NetworkClient> {
[INFO] [stdout]     | ----------------------------------------------------------------------------- method `process` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 100 |         let result_after = interactor.process(fake_user_ip, fake_destination_ip).await;
[INFO] [stdout]     |                                       ^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/application/request/services/window_builder.rs:5:1
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub struct WindowBuilder {}
[INFO] [stdout]     | ------------------------ doesn't satisfy `_: Window`
[INFO] [stdout]     |
[INFO] [stdout] note: trait bound `window_builder::WindowBuilder: domain::limit::window::window::Window` was not satisfied
[INFO] [stdout]    --> src/application/request/interactors/process_request.rs:13:9
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl<W: Window, R: LimitRepsiotry, N: NetworkClient> ProcessRequestImpl<W, R, N> {
[INFO] [stdout]     |         ^^^^^^                                       ---------------------------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] note: the trait `domain::limit::window::window::Window` must be implemented
[INFO] [stdout]    --> src/domain/limit/window/window.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | pub trait Window {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_client` is never used
[INFO] [stdout]   --> src/infrastructure/db/client/client.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn init_client(config: Config) -> Client {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/infrastructure/db/client/client.rs:32:19
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl RateLimitDbClient {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] 32 |     pub(crate) fn new(config: Config) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HttpClient` is never constructed
[INFO] [stdout]  --> src/infrastructure/client/client.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct HttpClient {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/infrastructure/client/client.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl HttpClient {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]  --> src/domain/limit/repository/repository.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     async fn check_rate_limit(&self, user_ip: &str, destination_ip: &str, window: &u64) -> Result<bool, Error>;
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout]   = note: `#[warn(async_fn_in_trait)]` on by default
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]   |
[INFO] [stdout] 4 -     async fn check_rate_limit(&self, user_ip: &str, destination_ip: &str, window: &u64) -> Result<bool, Error>;
[INFO] [stdout] 4 +     fn check_rate_limit(&self, user_ip: &str, destination_ip: &str, window: &u64) -> impl std::future::Future<Output = Result<bool, Error>> + Send;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]  --> src/domain/limit/network_client/network_client.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     async fn process_request(&self, destination: &str) -> Result<RequestResult, RequestError>;
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]   |
[INFO] [stdout] 4 -     async fn process_request(&self, destination: &str) -> Result<RequestResult, RequestError>;
[INFO] [stdout] 4 +     fn process_request(&self, destination: &str) -> impl std::future::Future<Output = Result<RequestResult, RequestError>> + Send;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/infrastructure/db/repository/limit/limit_repository.rs:150:13
[INFO] [stdout]     |
[INFO] [stdout] 150 |         let key = format!("{}:{}:{}", fake_user_ip, fake_destination_ip, window);
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exposed_limit`
[INFO] [stdout]    --> src/infrastructure/db/repository/limit/limit_repository.rs:153:17
[INFO] [stdout]     |
[INFO] [stdout] 153 |             let exposed_limit = repo
[INFO] [stdout]     |                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exposed_limit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0277, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `simple-rl` (bin "simple-rl" test) due to 9 previous errors; 6 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "a71123197e167f5efe3344c956c5a4d18ff5bada903013fa05f6fea73607ba01", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a71123197e167f5efe3344c956c5a4d18ff5bada903013fa05f6fea73607ba01", kill_on_drop: false }`
[INFO] [stdout] a71123197e167f5efe3344c956c5a4d18ff5bada903013fa05f6fea73607ba01
